package com.abner.design.patterns.state;

import java.util.Random;

/**
 * 可以抽奖(具体的状态角色，每个子类实现一个与 Context 的一个状态相关行为)
 * @author abner
 */
public class CanRaffleState extends State {

    RaffleActivity activity;

    public CanRaffleState(RaffleActivity activity) {
        this.activity = activity;
    }

    /**
     * 扣除积分
     */
    @Override
    public void deductMoney() {
        System.out.println("已经扣取过了积分");
    }

    /**
     * 是否中奖(10%中奖机会)
     * @return
     */
    @Override
    public boolean raffle() {
        System.out.println("正在抽奖，请稍等！");
        Random r = new Random();
        int num = r.nextInt(10);

        if(num == 0){
            // 中奖了发放奖品
            activity.setState(activity.getDispenseState());
            return true;
        }else{
            System.out.println("很遗憾没有抽中奖品!");
            // 更改为不能抽奖
            activity.setState(activity.getNoRafflleState());
            return false;
        }
    }

    /**
     * 不发放奖品
     */
    @Override
    public void dispensePrize() {
        System.out.println("没中奖，不能发放奖品");
    }
}
